package com.cskaoyan.day5.queue._01_introduct;

import java.util.ArrayDeque;
import java.util.LinkedList;
import java.util.Queue;

/**
 * Queue基础特点的演示。
 * 主要演示Collection的基础API使用，因为是继承的Collection
 *
 * @author Common-zhou
 * @since 2023-03-03 09:47
 */
public class Demo1 {
    public static void main(String[] args) {
        //1. Queue是Collection的子接口
        //2. 数据结构表现为：队列
        //3. 存储元素有序
        //4. 存储元素可重复
        //5. 不能存储null（除了LinkedList子实现）

        //test1();

        //test2();

        test3();

    }

    private static void test3() {
        //3. 存储元素有序
        //4. 存储元素可重复
        //5. 不能存储null（除了LinkedList子实现）

        //Queue<String> queue = new ArrayDeque<>();
        Queue<String> queue = new LinkedList<>();

        queue.add("飞哥");
        queue.add("景天叔叔");
        queue.add("飞哥");
        queue.add("zs");

        System.out.println(queue);

        // 队列不能存储null
        // LinkedList除外
        //queue.add(null);


    }

    private static void test2() {
        //2. 数据结构表现为：队列

        Queue<String> queue = new ArrayDeque<>();

        queue.add("zs");
        queue.add("ls");
        queue.add("wu");
        // 队头
        //  zs        ls      wu

        // 作为队列的一个使用
        String remove = queue.remove();
        System.out.println(remove);


        // 能不能从中间删？

        // 不能从中间删。因为Queue的定义： 从队尾进，从队头出
        // 如果： 从中间出。叫不叫一个队列？
        // 只会使用它的特有API。


    }

    private static void test1() {
        //1. Queue是Collection的子接口

        Queue<String> queue = new ArrayDeque<>();

        queue.add("zs");
        queue.add("贺子靖");
        queue.add("ls");
        queue.add("吴家豪");
        queue.add("飞哥");

        System.out.println(queue);

        // 只会删除第一个出现的元素。
        //queue.remove("zs");
        queue.remove("ls");

        System.out.println(queue);

        // bug   没有达到预期
        // 你脑海里面的代码运行逻辑  和 JVM不一致；   ————》 自己代码写错了

    }
}
